//
//  WBNetworkTool+Home.swift
//  WeiboTen
//
//  Created by ItHeiMa on 2017/7/10.
//  Copyright © 2017年 itHeima. All rights reserved.
//

import UIKit
import YYModel

extension WBNetworkTool {
    /// 获取新浪微博的数据
    ///
    /// - Parameters:
    ///   - since_id: 返回比当前微博id大的数据，下拉刷新时必传，max_id传0
    ///   - max_id: 返回小于或等于当前微博id的数据，上拉刷新时必传，since_id传0
    ///   - callBack: 完成回调，把从服务器获取的数据传给调用者
    func requestStatus(since_id: String, max_id: String, callBack: @escaping (Any?)->()) {
        
        //从服务器获取数据之前，先从数据库中查询数据
        let modelArr = WBSqliteTool.shared.queryStatus(since_id: since_id, max_id: max_id)
        
        if modelArr.count == 20 {
            callBack(modelArr)
            return
        }
        
        //如果数据库中没有数据，从网络请求
        let url = "https://api.weibo.com/2/statuses/home_timeline.json"
        let parameters = ["access_token": WBUserAccount.shared.access_token, "since_id": since_id, "max_id": max_id]
        
        WBNetworkTool.shared.request(urlStr: url, method: "GET", parameters: parameters) { (rsobject) in
            //将responseObject转成模型，并使用callBack返回
            //print(responseObject)
            if let dicArr = (rsobject as? [String: Any])?["statuses"] as? [[String: Any]] {
                //字典数组转模型数组
                let modelsArr = NSArray.yy_modelArray(with: WBStatusModel.self, json: dicArr) as? [WBStatusModel]
                
                //调用WBSqliteTool，将modelArr保存到数据中
                WBSqliteTool.shared.insertStatus(modelArr: modelsArr!)
                
                //完成回调
                callBack(modelsArr)
            } else {
                callBack(nil)
            }
            
//            guard let dicArr = (rsobject as? [String: Any])?["statuses"] as? [[String: Any]] else {
//                callBack(nil)
//                return
//            }
//            //字典数组转模型数组
//            let modelsArr = NSArray.yy_modelArray(with: WBStatusModel.self, json: dicArr) as? [WBStatusModel]
//            //完成回调
//            callBack(modelsArr)
            
            
//                if let responseObject = responseObject, //判断是否有数据返回
//                let dic = responseObject as? [String: Any], //将数据弱转成字典类型
//                let dicArr = dic["statuses"] as? [[String: Any]] //从字典中取到数据的字典数组，并做一次弱转
//            {
//                //字典数组转模型数组
//                let modelsArr = NSArray.yy_modelArray(with: WBStatusModel.self, json: dicArr) as? [WBStatusModel]
//                //完成回调
//                callBack(modelsArr)
//            } else {
//                //如果失败，返回一个nil
//                callBack(nil)
//            }
            
        }
    }
}
